#ifndef GAME_2048_H
#define GAME_2048_H

#include "main.h"
#include <vector>
#include <string>
#include <iostream>

class Game2048 
{
public:
    // 构造函数，初始化游戏板大小（默认为4x4）
    Game2048(int size = 4);

    // 初始化游戏
    void initialize();

    // 打印游戏板
    void printBoard() const;

    // 移动方向
    enum class Direction { UP, DOWN, LEFT, RIGHT };

    // 执行移动
    bool move(Direction direction);

    // 检查是否还有可能的移动
    bool canMove() const;

    // 获取当前分数
    int getScore() const;

    // 修改当前分数
    void setScore(int new_score);

    // 检查是否获胜（达到2048）
    bool isWin() const;

private:
    int boardSize;
    int score;
    std::vector<std::vector<int>> board;

    // 在空白位置随机添加一个2或4
    void addRandomTile();

    // 向左移动并合并
    bool moveLeft();

    // 向右移动并合并
    bool moveRight();

    // 向上移动并合并
    bool moveUp();

    // 向下移动并合并
    bool moveDown();

    // 旋转矩阵（用于简化移动操作）
    void rotateBoard();
};

#endif // GAME_2048_H